from flask import Flask, request,  redirect, render_template,session
from q1 import add_user,change,session as db_session,User 

app = Flask(__name__)

app.secret_key='QWERTYUIOP'#对用户信息加密

@app.route('/',methods=['GET',"POST"])
@app.route('/login',methods=['GET',"POST"])#路由默认接收请求方式位POST，然而登录所需要请求都有，所以要特别声明。
def login():
    if request.method=='GET':
        return  render_template('login.html')
    user=request.form.get('user')
    pwd=request.form.get('pwd')
    try:
        q1=db_session.query(User).filter(User.name==user,User.password==pwd).one()
    except Exception as e:
        print(e)
        q1=None
    if q1:
        session['user_info']=user
        return redirect('/index')
    else:
        return  render_template('login.html',msg='用户名或密码输入错误')


@app.route('/reg',methods=['GET',"POST"])
def reg():
    if request.method=='GET':
        return  render_template('reg.html')
    user=request.form.get('user')
    pwd=request.form.get('pwd')
    nickname = request.form.get('nickname')
    if add_user(user,pwd,nickname):
        return redirect('/login')
    else:
        return  render_template('reg.html',msg='用户名已存在')

@app.route('/edit',methods=['GET',"POST"])#路由默认接收请求方式位POST，然而登录所需要请求都有，所以要特别声明。
def edit():
    user_info=session.get('user_info')
    q1 = db_session.query(User).filter_by(name=user_info).first()   
    if not user_info:
        return redirect('/login')
    if request.method=='GET':
        return  render_template('edit.html',user=q1)
    
    opwd=request.form.get('opwd')
    npwd=request.form.get('npwd')
    if change(user_info,opwd,npwd):
        return redirect('/logout')
    else:
        return  render_template('edit.html',msg="出错了",user=q1)
    

@app.route('/index')
def index():
    user_info=session.get('user_info')
    if not user_info:
        return redirect('/login')
    else:
        q1 = db_session.query(User).filter_by(name=user_info).first()   
        return  render_template('index.html',user=q1)

@app.route('/index_reg')
def index_register():
    return render_template('index_reg.html')


@app.route('/logout')
def logout():
    del session['user_info']
    return redirect('login')



if __name__ == "__main__":
    app.run(host='0.0.0.0',port=80)
